/**
 * 
 * @param {String} url 请求地址 
 * @param {Object} params 请求参数
 * @param {String/undefined} type 返回数据类型
 * @param {Object} headers  请求自定义头部
 * @returns Promise
 */



function get(url,params,type,headers = {}){
    return new Promise((resolve,reject)=>{
    // 1 定义ajax对象
        const xhr = new XMLHttpRequest
        // 2 监听接口状态
        xhr.onreadystatechange =()=>{
            if(xhr.readyState === 4){
                if(xhr.status === 200){
                    let res = xhr.responseText
                    if(type === 'json')res = JSON.parse(res)
                    resolve(res)
                } else{
                    reject(xhr.status)
                }
            }
    }
            // 3 设置请求
            let temp = []
            for(let key in params){
                temp.push(`${key}=${params[key]}`)
            }
            xhr.open('get',`${url}?${temp.join('&')}`)
            for(let key in headers){
                xhr.setRequestHeader(key,headers[key])
            }
            // 4 发送请求
            xhr.send(null)
    })
    

}



/**
 * 
 * @param {String} url 请求网址
 * @param {Object} params 请求参数
 * @param {String/Undefined} type 返回的数据类型
 * @param {Object} headers 自定义请求头
 * @returns Promise
 */
function post(url,params,type,headers={}){
    return new Promise((resolve,reject)=>{
        const xhr=new XMLHttpRequest
        xhr.onreadystatechange=function(){
            if(xhr.readyState===4){
                if(xhr.status===200){
                    let res=xhr.responseText
                    if(type==='json'){
                        res=JSON.parse(res)
                    }
                    resolve(res)
                }else{
                    reject(xhr.status)
                }
            }
        }
        xhr.open('post', url)
        for(let key in headers){
            xhr.setRequestHeader(key,headers[key])
        }
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
        let temp=[]
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        xhr.send(temp.join('&'))
    })
}